%!TEX program = xelatex
\documentclass[lang=cn,11pt,a4paper,citestyle =authoryear]{elegantpaper}

% 标题
\title{数值分析Week4 编程作业实验报告}
\author{强基数学2001 \\ 关博仁}
\date{\zhtoday}


% 本文档命令
\usepackage{array,url}
\newcommand{\ccr}[1]{\makecell{{\color{#1}\rule{1cm}{1cm}}}}
\newcommand{\code}[1]{\lstinline{#1}}


% 文档区
\begin{document}

% 标题
\maketitle

%摘要
\begin{abstract}
本文为浙江大学2022-2023秋冬学期王何宇老师的《数值分析》课程作业，
内容为《数值分析 张庆海》第四章编程作业，理论作业及习题代码将会上传到仓库\href{https://gitee.com/wellsguan/na2022.git}{na2002}。
\end{abstract}

\section{实验思路}
本次试验是分析机器运算误差的产生原因，通过对于小数据进行不同算法测试以及模拟浮点数系统，来辅助深入理解计算机算术误差的产生并体会如何避免。\par
本次试验依然依赖笔者写好的\code{NaTools.hpp}类辅助进行测试，源代码说明将会在\code{Readme.md}中进行，详情参见我的仓库，下面时本次的习题两则。
\subsection{运算次数的影响分析}
通过对同一个多项式
\[f(x) = (x-1)^8\]
进行展开计算、秦九韶算法、以及直接朴素计算，画图，并分析产生误差的原因。
\subsection{FPN系统仿真}
采用较为简单的参数，用计算机生成一个简单的FPN系统，并加以讨论。

\newpage
\section{实验进程与数据}
    \subsection{多项式运算误差}
    本题目直接绘制多项式图像即可，取不同范围得到下图：
    \begin{figure}[htbp]
        \centering
        \includegraphics[width = 0.5\textwidth]{"plot.png"}
    \end{figure}
    \begin{figure}[htbp]
        \centering
        \includegraphics[width = 0.5\textwidth]{"plot_scale.png"}
    \end{figure}
    显然，上面的图是三个算法在1附近的表现，下面是[0,2]区间上的概况，可见事实上对于常用的范围，三种算法都基本能够符合我们的要求，但对于1附近，根据熟知定理4.41，显然展开计算和秦九韶算法的积累误差更大，第一种算法约为$44$次累积，秦九韶算法略少，是$15$次，而朴素计算只有$9$次，且8次为乘法误差，所以这不仅说明运算次数的误差积累作用显著，从某种程度上说明相对于加减法，乘法的积累误差较小，更不容易产生问题。
    
    \subsection{简易FPN系统仿真}
    本题中采取的思路是基于递归的枚举，数据规模较小，直接枚举出所有满足条件的数即可，得到如下输出：
    \begin{lstlisting}
    The UFL is 0.5
    The OFL is 3.5
    The size of FPN is 25
    -3.5 -3 -2.5 -2 -1.75 -1.5 -1.25 -1 -0.875 -0.75 -0.625 -0.5 0 0.5 0.625 0.75 0.875 1 1.25 1.5 1.75 2 2.5 3 3.5
    \end{lstlisting}
    其中25与结论
    \[|\mathbb{F}| = 2\beta^{p-1}(U-L+1)+1\]
    相一致，可见实验正确。我们得到了如下点图：
    \begin{figure}[htbp]
        \centering
        \includegraphics[width = 0.5\textwidth]{"1D.png"}
    \end{figure}
    对于非正规的元素，只需要注意到，正规元素只不包含最小指数的$m<1$的部分元素，直接针对这些元素进行加入，得到：
    \begin{lstlisting}
    The size of FPN is 31
    -3.5 -3 -2.5 -2 -1.75 -1.5 -1.25 -1 -0.875 -0.75 -0.625 -0.5 -0.375 -0.25 -0.125 0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1 1.25 1.5 1.75 2 2.5 3 3.5
    \end{lstlisting}
    有图像
    \begin{figure}[htbp]
        \centering
        \includegraphics[width = 0.5\textwidth]{"2D.png"}
    \end{figure}
\section{小结}
    在本次实验中，我们切实的体会到了机器误差产生重大影响的场合与原因，并且充分的了解到了避免这些问题所能够采取的合适方法；此外本次试验与预期一致，较为成功。\par

\end{document}
